JSON importから画像をアップロードする
JSON からインポートする際に、画像を読み込む機能があるとうれしいです。 code:text.json
{
"pages": [
{ "title": "ページタイトル",
"lines" : [
"ページタイトル",
"1行目",
"2行目",
{ "image/png" : "(BASE64)" },
"次の行",
"最後の行"
]
}
]
}
私がイメージしているのは、上のような記法です。 "lines" 内に、"image/png" のようなキー付きの行があると、gyazo に画像を登録してから、そこへのリンクURLをその位置に差し込んでくれる、とよいです。
画像登録する API は、gyazo にあるに違いないと思うのですが、どこか説明はあるでしょうか?
scrapbox と gyazo の連携を、どうやっているのか、ちゃんと調べてなくて、すみません。
なるほどshokai.icon
ちょっと難しそうな気がします
実装が難しいというより、今後大きなパフォーマンス問題を引き起こしてしまいそう
Gyazoへのアップロードは、Scrapboxのサーバーを通らずにブラウザから直接Gyazo.comに送信しています
JSONによるscrapboxへのimportは、scrapboxのサーバーでほぼすべての処理を行います
このscrapboxサーバー側でのimport中にGyazoへの画像アップロードを多数含めると、基本的には大丈夫だろうけどnode.jsのイベントループが詰まりそう
イベントループが詰まるとsocket.ioが詰まって、同じサーバーに接続している他のclientで編集エラーが連発されそうで怖いです
herokuのインフラにエラー扱いされてしまう可能性がある
JSON import処理が30秒以内に終了する必要がある
時間がかかる処理をとにかく入れたくない
scrapbox.ioでuploadが完結します
大量の画像を一度にuploadされると難しいかも?
はい。JSONの中にbase64を書いてサーバーで解釈するのは、サーバーが死にますshokai.icon
というわけでScrapboxサーバー側で画像をアップロードするのは無理そうですshokai.icon import用のjsonを作る時ツール側で
[GyazoURL]の記法に置換する
というのが良いと思います。
回答ありがとうございます。
ほぼ予想していた回答でした。
上の線で、実装を考えます。
上のツールうまくいきません。
質問者です。自分で解決しました。
GYAZOへ登録。エッセンスは、こんな感じです。
code:ruby
require "rest-client"
"access_token" => "gyazoのアクセストークン"
:imagedata => File.new( "画像ファイルへのパス", 'rb')
}
js=JSON.parse(r)